#ifndef __QYQ_MODULE_LED_H_
#define __QYQ_MODULE_LED_H_
#include "chip_include.h"
#ifndef __QYQ_MODULE_LED_C_
#define QYQ_MODULE_LED_EXT extern
#else
#define QYQ_MODULE_LED_EXT
#endif

typedef struct
{
    uint8_t qyq_module_led_status;     // LED 的状态 0 关闭  1 打开
    uint8_t qyq_module_led_brightness; // LED 的亮度 0-100的亮度调节

    void (*qyq_module_led_write_status)(uint8_t status);         // 需要适配，LED 写状态
    void (*qyq_module_led_write_brightness)(uint8_t brightness); // 需要适配，LED 写亮度

} qyq_module_led_config_t;

// 功能
typedef struct qyq_module_led_type
{
    qyq_module_led_config_t *qyq_module_led_config;

    int8_t (*qyq_module_led_init)(struct qyq_module_led_type *this);                                            // LED状态初始化
    int8_t (*qyq_module_led_on)(struct qyq_module_led_type *this);                                              // 打开LED灯
    int8_t (*qyq_module_led_off)(struct qyq_module_led_type *this);                                             // 关闭LED灯
    int8_t (*qyq_module_led_get_status)(struct qyq_module_led_type *this, uint8_t *status);                     // 获取状态
    int8_t (*qyq_module_led_set_status)(struct qyq_module_led_type *this, uint8_t status);                      // 设置状态
    int8_t (*qyq_module_led_get_brightness)(struct qyq_module_led_type *this, uint8_t *brightness);             // 获取亮度
    int8_t (*qyq_module_led_set_brightness)(struct qyq_module_led_type *this, uint8_t brightness);              // 设置亮度
} qyq_module_led_type_t;

QYQ_MODULE_LED_EXT int8_t qyq_module_led_create(qyq_module_led_type_t *this, qyq_module_led_config_t *qyq_module_led_config);

#endif
